/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.src.dao;

import com.src.pojos.Cls_Contribuyente;
import com.src.pojos.Cls_Persona;
import com.src.pojos.Cls_PersonaNatural;
import com.src.utiles.Cls_Parametros;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Date;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Map;
import org.springframework.dao.DataAccessException;

/**
 *
 * @author Christian
 */
public class Cls_Dao_Persona extends Cls_Dao_Mybatis_Jdbc_Connection implements Itf_Dao_Persona{
    public String insertarPersonaNatural(Map<String,Object> parametros){
        Cls_PersonaNatural persnat = (Cls_PersonaNatural)parametros.get("obj_personanatural");
        Connection cn = null;
        String retorno = "";
        try {           
           cn = getDataSourceSistema().getConnection();
           CallableStatement st = cn.prepareCall(""+parametros.get("fncPostgres"));
           st.registerOutParameter(1, 12);
           st.setString(2, persnat.getApelpat());
           st.setString(3, persnat.getApelmat());
           st.setString(4, persnat.getNombres());
           st.setDate(5, Date.valueOf(persnat.getFechanac()));
           st.setBoolean(6, persnat.isSexo());
           st.execute();
           retorno = st.getString(1);
           st.close();
           cn.close();
     } catch (SQLException e) {
       e.printStackTrace();
       retorno="error";
     }
     return retorno;
    }
    
    public ArrayList<Cls_Persona> obtenerTodasPersonas(Map<String,String> parametros){
        try{
            return (ArrayList<Cls_Persona>)this.getSqlMapClientTemplate().
                    queryForList(Cls_Parametros.FuncionIbt_OBTENER_TODAS_PERSONAS,parametros,
                    (Integer.parseInt((String)parametros.get("page"))-1)*Integer.parseInt((String)parametros.get("rp")),
                    Integer.parseInt((String)parametros.get("rp")));
        }catch(DataAccessException ex){
            ex.printStackTrace();
            return null;
        }
    }
    
    public int obtenerCantidadTodasPersonas(Map<String,String> parametros){
        try{
            return ((Integer)this.getSqlMapClientTemplate().
                    queryForObject(Cls_Parametros.FuncionIbt_OBTENER_CANTIDAD_TODAS_PERSONAS,parametros)).intValue();
        }catch(DataAccessException ex){
            ex.printStackTrace();
            return 0;
        }
    }
}
